package com.tom.architect.day18.simple2;

import com.tom.architect.day18.simple2.iterator.Iterator;

/**
 * 迭代器模式的应用：
 *
 */
public class Client {
    public static void main(String[] args) {
        // 根据用户名+密码去查询用户信息，
        // 查询到了代表登录成功，查询不到代表登录失败。
        WXUserSystem wxUserSystem = new WXUserSystem();
        QQUserSystem qqUserSystem = new QQUserSystem();


        // TODO 优化：将2个系统，统一放到一个地方。责任链模式。
        // 通过迭代器去查找。
        UserInfo loginUserInfo =
                queryUserInfo("Tom", "111", wxUserSystem.iterator());
        if (loginUserInfo == null) {
            // 进入qq系统里面查找。
            loginUserInfo = queryUserInfo("Tom", "111", qqUserSystem.iterator());
        }
        // 接入第三个系统......

        if (loginUserInfo == null) {
            System.out.println("----登录失败：用户名和密码错误");
        } else {
            System.out.println("----登录成功了");
        }
    }

    // app的三个module，分别提供的 数据为list，数组，set。
    // 为了方便使用，底层提供Iterator迭代器给上层使用。


    // 查询用户信息
    private static UserInfo queryUserInfo(String name, String pwd, Iterator<UserInfo> iterator) {
        // 循环，迭代器的模式使用
        while (iterator.hasNext()) {
            UserInfo userInfo = iterator.next();
            if (userInfo.userName.equals(name) && userInfo.userPwd.equals(pwd)) {
                return userInfo;
            }
        }
        return null;
    }


}
